package twoD.IsoPfem.math;

public interface FunctionBasisOnR3 {

	/**
	 * Returns the specified shape function.
	 * 
	 * @param i
	 *            index of the shape function
	 * @return the shape function
	 */
	public FunctionR3ToR getBasisFunction(int i);

	/**
	 * Returns all basis functions.
	 * 
	 * @return an array of functions
	 */
	public FunctionR3ToR[] getBasisFunctions();

	/**
	 * Returns the breakpoints for the basis functions.
	 * 
	 * @return array of breakpoints or <code>null</code>
	 */
	public double[] getBreakpoints();

	/**
	 * Returns the number of basis functions.
	 * 
	 * @return the dimension
	 */
	public int getDimension();

	/**
	 * Returns the domain on which this basis is defined.
	 * 
	 * @return the domain
	 */
	public Interval getDomain();

	/**
	 * Returns the maximum p for all functions.
	 * 
	 * @return max p
	 */
	public int getP();
}
